/*
1、页面加载的时候
  1 从缓存中获取购物车的相关数据  渲染到页面中
   这些数据的 checked = true;
2\微信支付
  1 那些人 那些账号可以实现微信支付
    1企业帐号
    2企业帐号的小程序后台中必须给开发者添加上白名单
    1一个appid 可以同时绑定多个开发者
    2这些开发者就可以公用这个appid和它的开发权限
3支付按钮
  1先判断缓存中有没有token
  2没有 跳转到授权页面 进行获取token
  3有token
  4创建订单 获取订单编号
  5已经完成了微信支付
  6手动删除缓存中 已经被选中的商品
  7删除后的购物车数据重新 回填到缓存中
  8再跳转页面
*/

import {getSetting,chooseAddress,openSetting,showModal,showToast,requestPayment} from "../../utils/asyncWx";
import regeneratorRuntime from '../../lib/runtime/runtime';
import {request} from "../../request/index.js";


Page({
  data: {
    address:{},
    cart:{},
    num:1,
    totalPrice:0,
    totalNum:0,
    hintStatus:true,
  },
  onShow: function () {
    wx.getUserInfo({
      success: function(res) {
        var userInfo = res.userInfo
        var nickName = userInfo.nickName
        var avatarUrl = userInfo.avatarUrl
        var gender = userInfo.gender //性别 0：未知、1：男、2：女
        var province = userInfo.province
        var city = userInfo.city
        var country = userInfo.country
      }
    })

    //1获取缓存中的收货地址信息
    const address = wx.getStorageSync('address');
    // 1、获取缓存中的购物车数据
    let cart = wx.getStorageSync('cart')||[];//当值不存在时，将其定义为一个空数组，相当于三元表达式的写法
    // 过滤掉 checked != true; 的数据
    cart = cart.filter(v=>v.checked);
    this.setData({address});
    // 1、总价格 总数量
    let totalPrice = 0;
    let totalNum = 0;
    cart.forEach(v => {
      totalPrice += v.num * v.goods_price;
      totalNum +=v.num;
    });
    this.setData({
      cart,
      totalPrice,
      totalNum,
      address
    });
  },
 
  // 商品支付购买
  async buyPay(){
    try {
      // 1判断缓存中有没有 token
    const token = wx.getStorageSync('token');
    // 2判断
    if(!token){
      wx.navigateTo({
        url: '/pages/auth/index',
      })
      return;
    }
    //3 创建订单
      // 3.1 准备请求头参数
      // const header = {Authorization:token};
      // 3.2准备请求体参数
      const order_price = this.data.totalPrice;
      const consignee_addr = this.data.address.all;
      const cart = this.data.cart;
      let goods =[];
      cart.forEach(v=>goods.push({
        goods_id:v.goods_id,
        goods_number:v.num,
        goods_price:v.goods_price
      }));
      const orderParam = {goods_id,goods_number,goods_price};
      // 4准备发送请求 创建订单 获取订单编号
      const {order_number} = await request({
        url:'/my/orders/create',
        method:'post',
        data:orderParam,
        })
      // 5发起预支付的接口
      const {pay} = await request({
        url:'/my/orders/req_unifiedorder',
        method:'post',
        data:{order_number}
      });
      // 6 发起微信支付
       await requestPayment(pay);
        // 7查询订单支付状态
        const res = await request({
          url:'/my/orders/chkOrder',
          method:'post',
          data:{order_number}
        });
        console.log('res',res)
        await showToast({title:'支付成功'})
        // 8 手动删除缓存中 已经支付的商品
        // 获取缓存中 商品数组,留下未被选中的false,过滤掉选中的 true
        let newCart = wx.getStorageSync('cart');
        newCart = newCart.filter(v=>!v.checked);
        wx.setStorageSync('cart', newCart)
        // 8 支付成功跳转到 订单页面
        wx.navigateTo({
          url: '/pages/order/index',
        });
    } catch (error) {
      await showToast({title:'支付失败'})
      console.log('error',error)
    }
    }  
})

